feat(native): add cross-platform renderer foundation - #506
Draft
bntvllnt wants to merge 18 commits into
Draft
Conversation
|
ntk preview
Built from |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the source-only React Native platform alongside the existing Web renderer: shared design tokens/contracts and
@vllnt/ui-core, 171 Native source modules, an Android/iOS Expo catalog, and synchronized fail-closed Native canary tooling. Stable Web installation remains@vllnt/ui@^0.3.0; this branch prepares VLLNT UI 0.4.0 without publishing it.Registry discovery uses one component catalog, renderer-aware navigation, a capability filter, platform comparison, and extensible implementation source tabs beside the existing Web preview. Locale and unrelated query state are preserved. Retired
/nativeroutes redirect into the filtered catalog. Native source availability is explicit throughout registry/MCP/LLM surfaces and localized metadata.Final review fixes
packages/ui-core,packages/ui-native, andpackages/design.Validation — HEAD
63856b8All four workspace gates were repeated successfully on the final source tree. Follow-ups make Native catalog text wrappers explicit, preserve Step identity with
cloneElement, restrict CI token permissions, and replace backtracking-prone filename/MDX expressions with bounded matching and regression tests. The generated MDX registry mirror was rebuilt and committed.pnpm lint --concurrency=1— all 6 workspace packages passed.pnpm -F @vllnt/ui exec tsc --noEmit --project tsconfig.build.json— passed.pnpm build --concurrency=1— all 6 workspace packages passed, including Android/iOS exports.pnpm test:once --concurrency=1— all 6 package tasks passed; Web: 318 files / 1,677 tests; Native: 17 suites / 100 tests.PLAYWRIGHT_BASE_URL=http://localhost:4306 pnpm -F @vllnt/ui-registry exec playwright test --workers=1against the production build — 79 passed, 7 skipped (live Storybook checks opt-in); includes EN/FR Native SEO, JSON-LD, responsive platform navigation, i18n, MDX and themes.pnpm check:circular; Native barrel/boundary checks; core/Native/catalog typechecks; core/Native/Web packed-package checks — passed.registry:check,registry:integrity,i18n:check— passed; 313 registry entries, stable install target ^0.3.0.git diff --check, pre-commit React Doctor error gate — passed (warnings remain).Parallel validation hit the local resource supervisor; serialized runs succeeded. No gates were bypassed.
Exact-head remote evidence
63856b8, including Quality, Native, E2E, Storybook, React Doctor, and CodeQL (zero new alerts). CI: https://github.com/vllnt/ui/actions/runs/339254568066273982049reports success for full SHA63856b85e1dc08960338f768b5d6f64763abfd58at https://pr-506-ui-registry.preview.vllnt.aiPLAYWRIGHT_BASE_URL=https://pr-506-ui-registry.preview.vllnt.ai pnpm -F @vllnt/ui-registry exec playwright test --workers=1— 86/86 passed, including live Storybook checks, Native SEO, localized routes, source/preview navigation and themes.Full base-to-head visual comparison
Independently generated all 305 existing visual fixture baselines from
origin/main(38db630) in a detached worktree. Same installed dependencies/browser, reduced-motion preference, no source edits. Then rebuilt HEAD63856b8with a separate CT cache and compared against those base snapshots with snapshot updating disabled. No new expectations were generated from HEAD.Review config inherits
playwright-ct.config.ts, runs every*.visual.tsx, setsretries: 0,reducedMotion: 'reduce', external snapshot/output paths and a distinctctCacheDirper tree. The existing 2% pixel-difference tolerance is unchanged. JSON reports and configs are retained under/tmp/pr506-full-visual/. Six affected fixture baselines were also visually inspected. The existing tabs fixture renders only text, so keyboard/ARIA evidence remains in unit/E2E suites. No baseline images were committed.Remaining gates — keep draft
5c0ff29repairs the committed-baseline gate and removes a remote-image fixture flake without changing its baseline. Synthetic integration with this PR is conflict-free and passed 305/305 strict Linux tests in 3.2m (--workers=1 --retries=0 --update-snapshots=none; synthetic commit4f3efa5, tree05e0c77e728b969e42e1ca3de15d9c0d48c14657). All shipped source/lockfile match this PR; baselines/config match ci: enforce committed Linux visual baselines #508. This is not exact-head CI for PR506. PR508's fresh visual and all code CI are green, but its latest preview attempt reports both app builds failed (exit1), superseding earlier attestation HTTP429. Preview log retrieval is blocked byntkauthentication (convex token failed (404)); restore access to diagnose before retrying. It remains draft pending preview recovery. No merge is authorized here. Integrate the prerequisite and rerun exact-head gates before clearing this draft.--update-snapshots; it is execution evidence, not the durable comparison gate. The independent base-to-head comparison above remains valid. PR ci: enforce committed Linux visual baselines #508's green result is not claimed as an exact-head check for PR feat(native): add cross-platform renderer foundation #506.Release boundaries
No merge, production deployment, package publication, or
latesttag change is authorized by this PR. Native availability intentionally remainssource/ installation unavailable. Canary publication stays disabled until trusted-publisher/environment setup and explicit enablement. The documented post-publication availability transition is a separate reviewed follow-up after both packages and synchronized canary tags are verified.Related to #479